カスタムUnity属性の作成:読み取り専用

您所在的位置:网站首页 unity readonly カスタムUnity属性の作成:読み取り専用

カスタムUnity属性の作成:読み取り専用

2024-07-12 17:23| 来源: 网络整理| 查看: 265

ReadOnlyは、パブリック/シリアル化されたフィールドをUnityインスペクターで編集不可能にし、表示されたままにする属性の一般名です。

今日の目的: Unityプロジェクトで使用するための独自のバージョンのReadOnly属性を作成する方法を説明します。

注: 私はごく最近、独自のカスタム属性を作成する方法を学び始めたばかりです。改善できる点があればお知らせください。:)

読み取り専用属性:

読み取り専用の属性は、その名前が示すものを行います。ユニティインスペクタに示す変数が作る読み取り専用、インスペクタを経由して編集できない直接の意味します。

最初の変数のみが変更可能です コード:

まず、「ReadOnlyAttribute」という新しいC#スクリプトを作成し、すべてのデフォルトコードをクリアします。

重要:開始時に見逃しがちですが、属性を作成するときは、クラス名の最後に「属性」という接尾辞を付ける必要があります(「読み取り専用属性」)。これは、C#とUnityがこれを属性として扱うことを知っている方法です。

新しいファイル内で、すべての属性クラスを「CustomAttributes」と呼ばれる新しい名前空間内に配置することを選択しました。これは、整理されたコードを作成する場合の良い習慣です。

属性クラスを作成する

次に、クラス自体を「ReadOnlyAttribute」という名前のパブリッククラスとして作成し、Unityの「PropertyAttribute」基本クラスから継承します。

また、この属性クラスの上に属性を追加して、ReadOnly属性の使用方法を定義します。

AttributeUsageパラメーター: 属性ターゲット(必須):この属性はどのタイプの定義で使用できますか? AttributeTarget列挙型オプション

3.継承(オプション):基本クラスにこの属性を使用する変数/メソッドなどがあり、それから派生した別のクラスがある場合、属性は派生クラスにも適用されますか?

ReadOnly属性は変数を編集不可にするだけでよいので、ここではそれ以上の機能は必要ありません。次に、機能を実行するためのカスタムプロパティドロワーを作成する必要があります。

ReadOnlyプロパティドロワー:

「ReadOnlyPropertyDrawer」という新しいクラスを作成し、「UnityEditor.PropertyDrawer」から継承します。

「CustomPropertyDrawer」属性を使用して、属性タイプ(先ほど作成したReadOnly属性)を割り当てます。

クラス内で、OnGUIメソッドをオーバーライドします。

このプロパティのGUIを無効にします。これにより、編集できなくなります。 属性が適用される変数のプロパティフィールドを作成します。これにより、インスペクターに変数が描画されます。OnGUIをオーバーライドしているので、これがないと何も表示されません。 ドキュメンテーション 結果:

どのフィールドも読み取り専用としてマークし、インスペクターから編集できなくなる可能性があります。誤って編集することなくクラスデータを表示するための優れた方法。

次:

次のいくつかの投稿では、他のいくつかの便利な属性を作成して、徐々に複雑にしていきます。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3